# 封装excel中对jsonpath的处理
import logging

import jsonpath


class GetKeywords:
    """
    实现对jsonpath的二次封装
    通过jsonpath来获取返回值
    """
    @staticmethod
    def get_keyword(data, name, index=0):
        """
        获取json数据里的一个数据
        :param data: 元数据
        :param name: 需要提取的名称
        :param index:索引
        :return: 最终提取的数据
        """
        try:
            result = jsonpath.jsonpath(data,f"$..{name}")[index]
        except Exception as e:
            result = False

        if result == False:
            logging.error(f"jsonpath提取失败：原本提取的元数据是{data},提取的值是{name}")
        else:
            return result

    @staticmethod
    def get_keywords(data, name):
        """
                获取提取的多个数据
                :param data: 元数据
                :param name: 需要提取的名称
                :return: 最终提取的数据
                """
        try:
            result = jsonpath.jsonpath(data, f"$..{name}")
        except Exception as e:
            result = False
        if result == False:
            logging.error(f"jsonpath提取失败：原本提取的元数据是{data},提取的值是{name}")
        else:
            return result

